[INFO] fetching crate pca9535 1.2.0...
[INFO] checking pca9535-1.2.0 against master#158f00a1c5175648af6f6099b075f78d1d014a28 for pr-121251
[INFO] extracting crate pca9535 1.2.0 into /workspace/builds/worker-1-tc1/source
[INFO] validating manifest of crates.io crate pca9535 1.2.0 on toolchain 158f00a1c5175648af6f6099b075f78d1d014a28
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+158f00a1c5175648af6f6099b075f78d1d014a28" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] removed /workspace/builds/worker-1-tc1/source/.cargo/config.toml
[INFO] started tweaking crates.io crate pca9535 1.2.0
[INFO] finished tweaking crates.io crate pca9535 1.2.0
[INFO] tweaked toml for crates.io crate pca9535 1.2.0 written to /workspace/builds/worker-1-tc1/source/Cargo.toml
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+158f00a1c5175648af6f6099b075f78d1d014a28" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+158f00a1c5175648af6f6099b075f78d1d014a28" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded spin_sleep v1.2.0
[INFO] [stderr]   Downloaded embedded-hal-nb v1.0.0-alpha.1
[INFO] [stderr]   Downloaded embedded-hal v1.0.0-alpha.9
[INFO] [stderr]   Downloaded shared-bus v0.2.5
[INFO] [stderr]   Downloaded rppal v0.14.1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+158f00a1c5175648af6f6099b075f78d1d014a28" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 67e8ed69b7cd116536cf0be165c47b6db215c3a09e0e871ce1898557357440e9
[INFO] running `Command { std: "docker" "start" "-a" "67e8ed69b7cd116536cf0be165c47b6db215c3a09e0e871ce1898557357440e9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "67e8ed69b7cd116536cf0be165c47b6db215c3a09e0e871ce1898557357440e9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "67e8ed69b7cd116536cf0be165c47b6db215c3a09e0e871ce1898557357440e9", kill_on_drop: false }`
[INFO] [stdout] 67e8ed69b7cd116536cf0be165c47b6db215c3a09e0e871ce1898557357440e9
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+158f00a1c5175648af6f6099b075f78d1d014a28" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] cc910194b7f88348a1029e10dee936ddd69e0aef84c0dce3631d4cd4da31e84b
[INFO] running `Command { std: "docker" "start" "-a" "cc910194b7f88348a1029e10dee936ddd69e0aef84c0dce3631d4cd4da31e84b", kill_on_drop: false }`
[INFO] [stderr]     Checking nb v1.1.0
[INFO] [stderr]    Compiling parking_lot_core v0.8.6
[INFO] [stderr]     Checking embedded-hal v1.0.0-alpha.9
[INFO] [stderr]     Checking instant v0.1.12
[INFO] [stderr]     Checking void v1.0.2
[INFO] [stderr]    Compiling proc-macro-error v1.0.4
[INFO] [stderr]     Checking spin_sleep v1.2.0
[INFO] [stderr]     Checking nb v0.1.3
[INFO] [stderr]     Checking embedded-hal v0.2.7
[INFO] [stderr]     Checking embedded-hal-nb v1.0.0-alpha.1
[INFO] [stderr]     Checking pca9535 v1.2.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Checking shared-bus v0.2.5
[INFO] [stderr]     Checking rppal v0.14.1
[INFO] [stderr]    Compiling serial_test_derive v0.6.0
[INFO] [stderr]     Checking parking_lot v0.11.2
[INFO] [stderr]     Checking serial_test v0.6.0
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>: ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not satisfied
[INFO] [stdout]    --> tests/immediate.rs:215:33
[INFO] [stdout]     |
[INFO] [stdout] 215 |         static ref IO_EXPANDER: IoExpander<ShareableI2c, ImmediateExpander, Mutex<ImmediateExpander>> = {
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not implemented for `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>: ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not satisfied
[INFO] [stdout]    --> tests/immediate.rs:214:5
[INFO] [stdout]     |
[INFO] [stdout] 214 | /     lazy_static! {
[INFO] [stdout] 215 | |         static ref IO_EXPANDER: IoExpander<ShareableI2c, ImmediateExpander, Mutex<ImmediateExpander>> = {
[INFO] [stdout] 216 | |             let i2c_bus = *I2C_BUS.lock().unwrap();
[INFO] [stdout] 217 | |             let expander = Pca9535Immediate::new(i2c_bus.acquire_i2c(), ADDR);
[INFO] [stdout] ...   |
[INFO] [stdout] 232 | |         };
[INFO] [stdout] 233 | |     }
[INFO] [stdout]     | |_____^ the trait `ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not implemented for `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout]     = note: this error originates in the macro `__lazy_static_internal` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>: ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not satisfied
[INFO] [stdout]    --> tests/immediate.rs:214:5
[INFO] [stdout]     |
[INFO] [stdout] 214 | /     lazy_static! {
[INFO] [stdout] 215 | |         static ref IO_EXPANDER: IoExpander<ShareableI2c, ImmediateExpander, Mutex<ImmediateExpander>> = {
[INFO] [stdout] 216 | |             let i2c_bus = *I2C_BUS.lock().unwrap();
[INFO] [stdout] 217 | |             let expander = Pca9535Immediate::new(i2c_bus.acquire_i2c(), ADDR);
[INFO] [stdout] ...   |
[INFO] [stdout] 232 | |         };
[INFO] [stdout] 233 | |     }
[INFO] [stdout]     | |_____^ the trait `ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not implemented for `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout]     = note: this error originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>: ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not satisfied
[INFO] [stdout]    --> tests/immediate.rs:214:5
[INFO] [stdout]     |
[INFO] [stdout] 214 | /     lazy_static! {
[INFO] [stdout] 215 | |         static ref IO_EXPANDER: IoExpander<ShareableI2c, ImmediateExpander, Mutex<ImmediateExpander>> = {
[INFO] [stdout] 216 | |             let i2c_bus = *I2C_BUS.lock().unwrap();
[INFO] [stdout] 217 | |             let expander = Pca9535Immediate::new(i2c_bus.acquire_i2c(), ADDR);
[INFO] [stdout] ...   |
[INFO] [stdout] 232 | |         };
[INFO] [stdout] 233 | |     }
[INFO] [stdout]     | |_____^ the trait `ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not implemented for `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout]     = note: this error originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>: ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not satisfied
[INFO] [stdout]    --> tests/immediate.rs:221:34
[INFO] [stdout]     |
[INFO] [stdout] 221 |         static ref PCA9535_GPIO: Pca9535Gpio = {
[INFO] [stdout]     |                                  ^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not implemented for `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>: ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not satisfied
[INFO] [stdout]    --> tests/immediate.rs:214:5
[INFO] [stdout]     |
[INFO] [stdout] 214 | /     lazy_static! {
[INFO] [stdout] 215 | |         static ref IO_EXPANDER: IoExpander<ShareableI2c, ImmediateExpander, Mutex<ImmediateExpander>> = {
[INFO] [stdout] 216 | |             let i2c_bus = *I2C_BUS.lock().unwrap();
[INFO] [stdout] 217 | |             let expander = Pca9535Immediate::new(i2c_bus.acquire_i2c(), ADDR);
[INFO] [stdout] ...   |
[INFO] [stdout] 232 | |         };
[INFO] [stdout] 233 | |     }
[INFO] [stdout]     | |_____^ the trait `ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not implemented for `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout]     = note: this error originates in the macro `__lazy_static_internal` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>: ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not satisfied
[INFO] [stdout]    --> tests/cached.rs:233:33
[INFO] [stdout]     |
[INFO] [stdout] 233 |         static ref IO_EXPANDER: IoExpander<ShareableI2c, CachedExpander, Mutex<CachedExpander>> = {
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not implemented for `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>: ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not satisfied
[INFO] [stdout]    --> tests/immediate.rs:214:5
[INFO] [stdout]     |
[INFO] [stdout] 214 | /     lazy_static! {
[INFO] [stdout] 215 | |         static ref IO_EXPANDER: IoExpander<ShareableI2c, ImmediateExpander, Mutex<ImmediateExpander>> = {
[INFO] [stdout] 216 | |             let i2c_bus = *I2C_BUS.lock().unwrap();
[INFO] [stdout] 217 | |             let expander = Pca9535Immediate::new(i2c_bus.acquire_i2c(), ADDR);
[INFO] [stdout] ...   |
[INFO] [stdout] 232 | |         };
[INFO] [stdout] 233 | |     }
[INFO] [stdout]     | |_____^ the trait `ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not implemented for `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout]     = note: this error originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>: ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not satisfied
[INFO] [stdout]    --> tests/cached.rs:232:5
[INFO] [stdout]     |
[INFO] [stdout] 232 | /     lazy_static! {
[INFO] [stdout] 233 | |         static ref IO_EXPANDER: IoExpander<ShareableI2c, CachedExpander, Mutex<CachedExpander>> = {
[INFO] [stdout] 234 | |             let i2c_bus = *I2C_BUS.lock().unwrap();
[INFO] [stdout] 235 | |             let expander =
[INFO] [stdout] ...   |
[INFO] [stdout] 251 | |         };
[INFO] [stdout] 252 | |     }
[INFO] [stdout]     | |_____^ the trait `ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not implemented for `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout]     = note: this error originates in the macro `__lazy_static_internal` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>: ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not satisfied
[INFO] [stdout]    --> tests/immediate.rs:214:5
[INFO] [stdout]     |
[INFO] [stdout] 214 | /     lazy_static! {
[INFO] [stdout] 215 | |         static ref IO_EXPANDER: IoExpander<ShareableI2c, ImmediateExpander, Mutex<ImmediateExpander>> = {
[INFO] [stdout] 216 | |             let i2c_bus = *I2C_BUS.lock().unwrap();
[INFO] [stdout] 217 | |             let expander = Pca9535Immediate::new(i2c_bus.acquire_i2c(), ADDR);
[INFO] [stdout] ...   |
[INFO] [stdout] 232 | |         };
[INFO] [stdout] 233 | |     }
[INFO] [stdout]     | |_____^ the trait `ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not implemented for `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout]     = note: this error originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>: ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not satisfied
[INFO] [stdout]    --> tests/cached.rs:232:5
[INFO] [stdout]     |
[INFO] [stdout] 232 | /     lazy_static! {
[INFO] [stdout] 233 | |         static ref IO_EXPANDER: IoExpander<ShareableI2c, CachedExpander, Mutex<CachedExpander>> = {
[INFO] [stdout] 234 | |             let i2c_bus = *I2C_BUS.lock().unwrap();
[INFO] [stdout] 235 | |             let expander =
[INFO] [stdout] ...   |
[INFO] [stdout] 251 | |         };
[INFO] [stdout] 252 | |     }
[INFO] [stdout]     | |_____^ the trait `ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not implemented for `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout]     = note: this error originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>: ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not satisfied
[INFO] [stdout]    --> tests/cached.rs:232:5
[INFO] [stdout]     |
[INFO] [stdout] 232 | /     lazy_static! {
[INFO] [stdout] 233 | |         static ref IO_EXPANDER: IoExpander<ShareableI2c, CachedExpander, Mutex<CachedExpander>> = {
[INFO] [stdout] 234 | |             let i2c_bus = *I2C_BUS.lock().unwrap();
[INFO] [stdout] 235 | |             let expander =
[INFO] [stdout] ...   |
[INFO] [stdout] 251 | |         };
[INFO] [stdout] 252 | |     }
[INFO] [stdout]     | |_____^ the trait `ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not implemented for `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout]     = note: this error originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>: ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not satisfied
[INFO] [stdout]    --> tests/cached.rs:240:34
[INFO] [stdout]     |
[INFO] [stdout] 240 |         static ref PCA9535_GPIO: Pca9535Gpio = {
[INFO] [stdout]     |                                  ^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not implemented for `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>: ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not satisfied
[INFO] [stdout]    --> tests/immediate.rs:214:5
[INFO] [stdout]     |
[INFO] [stdout] 214 | /     lazy_static! {
[INFO] [stdout] 215 | |         static ref IO_EXPANDER: IoExpander<ShareableI2c, ImmediateExpander, Mutex<ImmediateExpander>> = {
[INFO] [stdout] 216 | |             let i2c_bus = *I2C_BUS.lock().unwrap();
[INFO] [stdout] 217 | |             let expander = Pca9535Immediate::new(i2c_bus.acquire_i2c(), ADDR);
[INFO] [stdout] ...   |
[INFO] [stdout] 232 | |         };
[INFO] [stdout] 233 | |     }
[INFO] [stdout]     | |_____^ the trait `ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not implemented for `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout]     = note: this error originates in the macro `__lazy_static_internal` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>: ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not satisfied
[INFO] [stdout]    --> tests/cached.rs:232:5
[INFO] [stdout]     |
[INFO] [stdout] 232 | /     lazy_static! {
[INFO] [stdout] 233 | |         static ref IO_EXPANDER: IoExpander<ShareableI2c, CachedExpander, Mutex<CachedExpander>> = {
[INFO] [stdout] 234 | |             let i2c_bus = *I2C_BUS.lock().unwrap();
[INFO] [stdout] 235 | |             let expander =
[INFO] [stdout] ...   |
[INFO] [stdout] 251 | |         };
[INFO] [stdout] 252 | |     }
[INFO] [stdout]     | |_____^ the trait `ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not implemented for `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout]     = note: this error originates in the macro `__lazy_static_internal` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>: ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not satisfied
[INFO] [stdout]    --> tests/immediate.rs:214:5
[INFO] [stdout]     |
[INFO] [stdout] 214 | /     lazy_static! {
[INFO] [stdout] 215 | |         static ref IO_EXPANDER: IoExpander<ShareableI2c, ImmediateExpander, Mutex<ImmediateExpander>> = {
[INFO] [stdout] 216 | |             let i2c_bus = *I2C_BUS.lock().unwrap();
[INFO] [stdout] 217 | |             let expander = Pca9535Immediate::new(i2c_bus.acquire_i2c(), ADDR);
[INFO] [stdout] ...   |
[INFO] [stdout] 232 | |         };
[INFO] [stdout] 233 | |     }
[INFO] [stdout]     | |_____^ the trait `ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not implemented for `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout]     = note: this error originates in the macro `__lazy_static_internal` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>: ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not satisfied
[INFO] [stdout]    --> tests/cached.rs:232:5
[INFO] [stdout]     |
[INFO] [stdout] 232 | /     lazy_static! {
[INFO] [stdout] 233 | |         static ref IO_EXPANDER: IoExpander<ShareableI2c, CachedExpander, Mutex<CachedExpander>> = {
[INFO] [stdout] 234 | |             let i2c_bus = *I2C_BUS.lock().unwrap();
[INFO] [stdout] 235 | |             let expander =
[INFO] [stdout] ...   |
[INFO] [stdout] 251 | |         };
[INFO] [stdout] 252 | |     }
[INFO] [stdout]     | |_____^ the trait `ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not implemented for `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout]     = note: this error originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>: ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not satisfied
[INFO] [stdout]    --> tests/cached.rs:232:5
[INFO] [stdout]     |
[INFO] [stdout] 232 | /     lazy_static! {
[INFO] [stdout] 233 | |         static ref IO_EXPANDER: IoExpander<ShareableI2c, CachedExpander, Mutex<CachedExpander>> = {
[INFO] [stdout] 234 | |             let i2c_bus = *I2C_BUS.lock().unwrap();
[INFO] [stdout] 235 | |             let expander =
[INFO] [stdout] ...   |
[INFO] [stdout] 251 | |         };
[INFO] [stdout] 252 | |     }
[INFO] [stdout]     | |_____^ the trait `ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not implemented for `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout]     = note: this error originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>: ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not satisfied
[INFO] [stdout]    --> tests/cached.rs:232:5
[INFO] [stdout]     |
[INFO] [stdout] 232 | /     lazy_static! {
[INFO] [stdout] 233 | |         static ref IO_EXPANDER: IoExpander<ShareableI2c, CachedExpander, Mutex<CachedExpander>> = {
[INFO] [stdout] 234 | |             let i2c_bus = *I2C_BUS.lock().unwrap();
[INFO] [stdout] 235 | |             let expander =
[INFO] [stdout] ...   |
[INFO] [stdout] 251 | |         };
[INFO] [stdout] 252 | |     }
[INFO] [stdout]     | |_____^ the trait `ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not implemented for `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout]     = note: this error originates in the macro `__lazy_static_internal` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>: ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not satisfied
[INFO] [stdout]    --> tests/cached.rs:232:5
[INFO] [stdout]     |
[INFO] [stdout] 232 | /     lazy_static! {
[INFO] [stdout] 233 | |         static ref IO_EXPANDER: IoExpander<ShareableI2c, CachedExpander, Mutex<CachedExpander>> = {
[INFO] [stdout] 234 | |             let i2c_bus = *I2C_BUS.lock().unwrap();
[INFO] [stdout] 235 | |             let expander =
[INFO] [stdout] ...   |
[INFO] [stdout] 251 | |         };
[INFO] [stdout] 252 | |     }
[INFO] [stdout]     | |_____^ the trait `ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not implemented for `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout]     = note: this error originates in the macro `__lazy_static_internal` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>: ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not satisfied
[INFO] [stdout]    --> tests/immediate.rs:214:5
[INFO] [stdout]     |
[INFO] [stdout] 214 | /     lazy_static! {
[INFO] [stdout] 215 | |         static ref IO_EXPANDER: IoExpander<ShareableI2c, ImmediateExpander, Mutex<ImmediateExpander>> = {
[INFO] [stdout] 216 | |             let i2c_bus = *I2C_BUS.lock().unwrap();
[INFO] [stdout] 217 | |             let expander = Pca9535Immediate::new(i2c_bus.acquire_i2c(), ADDR);
[INFO] [stdout] ...   |
[INFO] [stdout] 232 | |         };
[INFO] [stdout] 233 | |     }
[INFO] [stdout]     | |_____^ the trait `ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not implemented for `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout]     = note: this error originates in the macro `__lazy_static_internal` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>: ExpanderMutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>` is not satisfied
[INFO] [stdout]    --> tests/immediate.rs:219:13
[INFO] [stdout]     |
[INFO] [stdout] 219 |             IoExpander::new(expander)
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>` is not implemented for `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander::<I2C, Ex, Em>::new`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:26:9
[INFO] [stdout]     |
[INFO] [stdout] 26  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander::<I2C, Ex, Em>::new`
[INFO] [stdout] ...
[INFO] [stdout] 30  |     pub fn new(expander: Ex) -> IoExpander<I2C, Ex, Em> {
[INFO] [stdout]     |            --- required by a bound in this associated function
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>: ExpanderMutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>` is not satisfied
[INFO] [stdout]    --> tests/immediate.rs:219:13
[INFO] [stdout]     |
[INFO] [stdout] 219 |             IoExpander::new(expander)
[INFO] [stdout]     |             ^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>` is not implemented for `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>: ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not satisfied
[INFO] [stdout]    --> tests/immediate.rs:214:5
[INFO] [stdout]     |
[INFO] [stdout] 214 | /     lazy_static! {
[INFO] [stdout] 215 | |         static ref IO_EXPANDER: IoExpander<ShareableI2c, ImmediateExpander, Mutex<ImmediateExpander>> = {
[INFO] [stdout] 216 | |             let i2c_bus = *I2C_BUS.lock().unwrap();
[INFO] [stdout] 217 | |             let expander = Pca9535Immediate::new(i2c_bus.acquire_i2c(), ADDR);
[INFO] [stdout] ...   |
[INFO] [stdout] 232 | |         };
[INFO] [stdout] 233 | |     }
[INFO] [stdout]     | |_____^ the trait `ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not implemented for `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout]     = note: this error originates in the macro `__lazy_static_internal` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>: ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not satisfied
[INFO] [stdout]    --> tests/immediate.rs:214:5
[INFO] [stdout]     |
[INFO] [stdout] 214 | /     lazy_static! {
[INFO] [stdout] 215 | |         static ref IO_EXPANDER: IoExpander<ShareableI2c, ImmediateExpander, Mutex<ImmediateExpander>> = {
[INFO] [stdout] 216 | |             let i2c_bus = *I2C_BUS.lock().unwrap();
[INFO] [stdout] 217 | |             let expander = Pca9535Immediate::new(i2c_bus.acquire_i2c(), ADDR);
[INFO] [stdout] ...   |
[INFO] [stdout] 232 | |         };
[INFO] [stdout] 233 | |     }
[INFO] [stdout]     | |_____^ the trait `ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not implemented for `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout]     = note: this error originates in the macro `__lazy_static_internal` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>: ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not satisfied
[INFO] [stdout]    --> tests/immediate.rs:214:5
[INFO] [stdout]     |
[INFO] [stdout] 214 | /     lazy_static! {
[INFO] [stdout] 215 | |         static ref IO_EXPANDER: IoExpander<ShareableI2c, ImmediateExpander, Mutex<ImmediateExpander>> = {
[INFO] [stdout] 216 | |             let i2c_bus = *I2C_BUS.lock().unwrap();
[INFO] [stdout] 217 | |             let expander = Pca9535Immediate::new(i2c_bus.acquire_i2c(), ADDR);
[INFO] [stdout] ...   |
[INFO] [stdout] 232 | |         };
[INFO] [stdout] 233 | |     }
[INFO] [stdout]     | |_____^ the trait `ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not implemented for `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout]     = note: this error originates in the macro `__lazy_static_internal` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>: ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not satisfied
[INFO] [stdout]    --> tests/immediate.rs:223:48
[INFO] [stdout]     |
[INFO] [stdout] 223 |                 _in0_3: ExpanderInputPin::new(&*IO_EXPANDER, GPIOBank::Bank0, 3).unwrap(),
[INFO] [stdout]     |                                                ^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not implemented for `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>: ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not satisfied
[INFO] [stdout]    --> tests/cached.rs:232:5
[INFO] [stdout]     |
[INFO] [stdout] 232 | /     lazy_static! {
[INFO] [stdout] 233 | |         static ref IO_EXPANDER: IoExpander<ShareableI2c, CachedExpander, Mutex<CachedExpander>> = {
[INFO] [stdout] 234 | |             let i2c_bus = *I2C_BUS.lock().unwrap();
[INFO] [stdout] 235 | |             let expander =
[INFO] [stdout] ...   |
[INFO] [stdout] 251 | |         };
[INFO] [stdout] 252 | |     }
[INFO] [stdout]     | |_____^ the trait `ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not implemented for `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout]     = note: this error originates in the macro `__lazy_static_internal` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>: ExpanderMutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>` is not satisfied
[INFO] [stdout]    --> tests/immediate.rs:223:47
[INFO] [stdout]     |
[INFO] [stdout] 223 |                 _in0_3: ExpanderInputPin::new(&*IO_EXPANDER, GPIOBank::Bank0, 3).unwrap(),
[INFO] [stdout]     |                         --------------------- ^^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>` is not implemented for `Mutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>`, which is required by `IoExpander<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>, Mutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>>: SyncExpander<_>`
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `SyncExpander<I2C>` is implemented for `IoExpander<I2C, Ex, Em>`
[INFO] [stdout]     = note: required for `IoExpander<I2cProxy<'_, Mutex<I2c>>, Pca9535Immediate<I2cProxy<'_, Mutex<I2c>>>, Mutex<Pca9535Immediate<...>>>` to implement `SyncExpander<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>`
[INFO] [stdout]     = note: the full type name has been written to '/opt/rustwide/target/debug/deps/immediate-90cea765d48ea960.long-type-12864866286426190558.txt'
[INFO] [stdout] note: required by a bound in `ExpanderInputPin::<'a, I2C, Io>::new`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/pin.rs:48:9
[INFO] [stdout]     |
[INFO] [stdout] 48  |     Io: SyncExpander<I2C>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `ExpanderInputPin::<'a, I2C, Io>::new`
[INFO] [stdout] ...
[INFO] [stdout] 56  |     pub fn new(expander: &'a Io, bank: GPIOBank, pin: u8) -> Result<Self, ExpanderError<E>> {
[INFO] [stdout]     |            --- required by a bound in this associated function
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>: ExpanderMutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>` is not satisfied
[INFO] [stdout]    --> tests/immediate.rs:223:25
[INFO] [stdout]     |
[INFO] [stdout] 223 |                 _in0_3: ExpanderInputPin::new(&*IO_EXPANDER, GPIOBank::Bank0, 3).unwrap(),
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>` is not implemented for `Mutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>: ExpanderMutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>` is not satisfied
[INFO] [stdout]    --> tests/cached.rs:238:13
[INFO] [stdout]     |
[INFO] [stdout] 238 |             IoExpander::new(expander)
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>` is not implemented for `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander::<I2C, Ex, Em>::new`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:26:9
[INFO] [stdout]     |
[INFO] [stdout] 26  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander::<I2C, Ex, Em>::new`
[INFO] [stdout] ...
[INFO] [stdout] 30  |     pub fn new(expander: Ex) -> IoExpander<I2C, Ex, Em> {
[INFO] [stdout]     |            --- required by a bound in this associated function
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>: ExpanderMutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>` is not satisfied
[INFO] [stdout]    --> tests/immediate.rs:223:25
[INFO] [stdout]     |
[INFO] [stdout] 223 |                 _in0_3: ExpanderInputPin::new(&*IO_EXPANDER, GPIOBank::Bank0, 3).unwrap(),
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>` is not implemented for `Mutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>: ExpanderMutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>` is not satisfied
[INFO] [stdout]    --> tests/cached.rs:238:13
[INFO] [stdout]     |
[INFO] [stdout] 238 |             IoExpander::new(expander)
[INFO] [stdout]     |             ^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>` is not implemented for `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>: ExpanderMutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>` is not satisfied
[INFO] [stdout]    --> tests/immediate.rs:222:32
[INFO] [stdout]     |
[INFO] [stdout] 222 |             let pca9535_gpio = Pca9535GPIO {
[INFO] [stdout]     |                                ^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>` is not implemented for `Mutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>`, which is required by `IoExpander<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>, Mutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>>: SyncExpander<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `SyncExpander<I2C>` is implemented for `IoExpander<I2C, Ex, Em>`
[INFO] [stdout]     = note: required for `IoExpander<I2cProxy<'_, Mutex<I2c>>, Pca9535Immediate<I2cProxy<'_, Mutex<I2c>>>, Mutex<Pca9535Immediate<...>>>` to implement `SyncExpander<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>`
[INFO] [stdout]     = note: the full type name has been written to '/opt/rustwide/target/debug/deps/immediate-90cea765d48ea960.long-type-617376339555181173.txt'
[INFO] [stdout] note: required by a bound in `Pca9535GPIO`
[INFO] [stdout]    --> tests/common/mod.rs:59:8
[INFO] [stdout]     |
[INFO] [stdout] 57  | pub struct Pca9535GPIO<'a, T, I2C>
[INFO] [stdout]     |            ----------- required by a bound in this struct
[INFO] [stdout] 58  | where
[INFO] [stdout] 59  |     T: SyncExpander<I2C>,
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^ required by this bound in `Pca9535GPIO`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>: ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not satisfied
[INFO] [stdout]    --> tests/cached.rs:232:5
[INFO] [stdout]     |
[INFO] [stdout] 232 | /     lazy_static! {
[INFO] [stdout] 233 | |         static ref IO_EXPANDER: IoExpander<ShareableI2c, CachedExpander, Mutex<CachedExpander>> = {
[INFO] [stdout] 234 | |             let i2c_bus = *I2C_BUS.lock().unwrap();
[INFO] [stdout] 235 | |             let expander =
[INFO] [stdout] ...   |
[INFO] [stdout] 251 | |         };
[INFO] [stdout] 252 | |     }
[INFO] [stdout]     | |_____^ the trait `ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not implemented for `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout]     = note: this error originates in the macro `__lazy_static_internal` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>: ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not satisfied
[INFO] [stdout]    --> tests/immediate.rs:224:47
[INFO] [stdout]     |
[INFO] [stdout] 224 |                 in0_4: ExpanderInputPin::new(&*IO_EXPANDER, GPIOBank::Bank0, 4).unwrap(),
[INFO] [stdout]     |                                               ^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not implemented for `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>: ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not satisfied
[INFO] [stdout]    --> tests/cached.rs:232:5
[INFO] [stdout]     |
[INFO] [stdout] 232 | /     lazy_static! {
[INFO] [stdout] 233 | |         static ref IO_EXPANDER: IoExpander<ShareableI2c, CachedExpander, Mutex<CachedExpander>> = {
[INFO] [stdout] 234 | |             let i2c_bus = *I2C_BUS.lock().unwrap();
[INFO] [stdout] 235 | |             let expander =
[INFO] [stdout] ...   |
[INFO] [stdout] 251 | |         };
[INFO] [stdout] 252 | |     }
[INFO] [stdout]     | |_____^ the trait `ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not implemented for `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout]     = note: this error originates in the macro `__lazy_static_internal` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>: ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not satisfied
[INFO] [stdout]    --> tests/cached.rs:232:5
[INFO] [stdout]     |
[INFO] [stdout] 232 | /     lazy_static! {
[INFO] [stdout] 233 | |         static ref IO_EXPANDER: IoExpander<ShareableI2c, CachedExpander, Mutex<CachedExpander>> = {
[INFO] [stdout] 234 | |             let i2c_bus = *I2C_BUS.lock().unwrap();
[INFO] [stdout] 235 | |             let expander =
[INFO] [stdout] ...   |
[INFO] [stdout] 251 | |         };
[INFO] [stdout] 252 | |     }
[INFO] [stdout]     | |_____^ the trait `ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not implemented for `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout]     = note: this error originates in the macro `__lazy_static_internal` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>: ExpanderMutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>` is not satisfied
[INFO] [stdout]    --> tests/immediate.rs:224:46
[INFO] [stdout]     |
[INFO] [stdout] 224 |                 in0_4: ExpanderInputPin::new(&*IO_EXPANDER, GPIOBank::Bank0, 4).unwrap(),
[INFO] [stdout]     |                        --------------------- ^^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>` is not implemented for `Mutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>`, which is required by `IoExpander<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>, Mutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>>: SyncExpander<_>`
[INFO] [stdout]     |                        |
[INFO] [stdout]     |                        required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `SyncExpander<I2C>` is implemented for `IoExpander<I2C, Ex, Em>`
[INFO] [stdout]     = note: required for `IoExpander<I2cProxy<'_, Mutex<I2c>>, Pca9535Immediate<I2cProxy<'_, Mutex<I2c>>>, Mutex<Pca9535Immediate<...>>>` to implement `SyncExpander<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>`
[INFO] [stdout]     = note: the full type name has been written to '/opt/rustwide/target/debug/deps/immediate-90cea765d48ea960.long-type-3741526185659563340.txt'
[INFO] [stdout] note: required by a bound in `ExpanderInputPin::<'a, I2C, Io>::new`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/pin.rs:48:9
[INFO] [stdout]     |
[INFO] [stdout] 48  |     Io: SyncExpander<I2C>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `ExpanderInputPin::<'a, I2C, Io>::new`
[INFO] [stdout] ...
[INFO] [stdout] 56  |     pub fn new(expander: &'a Io, bank: GPIOBank, pin: u8) -> Result<Self, ExpanderError<E>> {
[INFO] [stdout]     |            --- required by a bound in this associated function
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>: ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not satisfied
[INFO] [stdout]    --> tests/cached.rs:242:48
[INFO] [stdout]     |
[INFO] [stdout] 242 |                 _in0_3: ExpanderInputPin::new(&*IO_EXPANDER, GPIOBank::Bank0, 3).unwrap(),
[INFO] [stdout]     |                                                ^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not implemented for `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>: ExpanderMutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>` is not satisfied
[INFO] [stdout]    --> tests/immediate.rs:224:24
[INFO] [stdout]     |
[INFO] [stdout] 224 |                 in0_4: ExpanderInputPin::new(&*IO_EXPANDER, GPIOBank::Bank0, 4).unwrap(),
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>` is not implemented for `Mutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>: ExpanderMutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>` is not satisfied
[INFO] [stdout]    --> tests/immediate.rs:224:24
[INFO] [stdout]     |
[INFO] [stdout] 224 |                 in0_4: ExpanderInputPin::new(&*IO_EXPANDER, GPIOBank::Bank0, 4).unwrap(),
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>` is not implemented for `Mutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>: ExpanderMutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>` is not satisfied
[INFO] [stdout]    --> tests/cached.rs:242:47
[INFO] [stdout]     |
[INFO] [stdout] 242 |                 _in0_3: ExpanderInputPin::new(&*IO_EXPANDER, GPIOBank::Bank0, 3).unwrap(),
[INFO] [stdout]     |                         --------------------- ^^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>` is not implemented for `Mutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>`, which is required by `IoExpander<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>, Mutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>>: SyncExpander<_>`
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `SyncExpander<I2C>` is implemented for `IoExpander<I2C, Ex, Em>`
[INFO] [stdout]     = note: required for `IoExpander<I2cProxy<'_, Mutex<I2c>>, Pca9535Cached<I2cProxy<'_, Mutex<I2c>>, &InputPin>, Mutex<...>>` to implement `SyncExpander<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>`
[INFO] [stdout]     = note: the full type name has been written to '/opt/rustwide/target/debug/deps/cached-53d65e70595a73f3.long-type-14333610224103134411.txt'
[INFO] [stdout] note: required by a bound in `ExpanderInputPin::<'a, I2C, Io>::new`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/pin.rs:48:9
[INFO] [stdout]     |
[INFO] [stdout] 48  |     Io: SyncExpander<I2C>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `ExpanderInputPin::<'a, I2C, Io>::new`
[INFO] [stdout] ...
[INFO] [stdout] 56  |     pub fn new(expander: &'a Io, bank: GPIOBank, pin: u8) -> Result<Self, ExpanderError<E>> {
[INFO] [stdout]     |            --- required by a bound in this associated function
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>: ExpanderMutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>` is not satisfied
[INFO] [stdout]    --> tests/cached.rs:242:25
[INFO] [stdout]     |
[INFO] [stdout] 242 |                 _in0_3: ExpanderInputPin::new(&*IO_EXPANDER, GPIOBank::Bank0, 3).unwrap(),
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>` is not implemented for `Mutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>: ExpanderMutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>` is not satisfied
[INFO] [stdout]    --> tests/cached.rs:242:25
[INFO] [stdout]     |
[INFO] [stdout] 242 |                 _in0_3: ExpanderInputPin::new(&*IO_EXPANDER, GPIOBank::Bank0, 3).unwrap(),
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>` is not implemented for `Mutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>: ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not satisfied
[INFO] [stdout]    --> tests/immediate.rs:225:50
[INFO] [stdout]     |
[INFO] [stdout] 225 |                 _out0_7: ExpanderOutputPin::new(&*IO_EXPANDER, GPIOBank::Bank0, 7, PinState::High)
[INFO] [stdout]     |                                                  ^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not implemented for `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>: ExpanderMutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>` is not satisfied
[INFO] [stdout]    --> tests/cached.rs:241:32
[INFO] [stdout]     |
[INFO] [stdout] 241 |             let pca9535_gpio = Pca9535GPIO {
[INFO] [stdout]     |                                ^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>` is not implemented for `Mutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>`, which is required by `IoExpander<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>, Mutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>>: SyncExpander<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `SyncExpander<I2C>` is implemented for `IoExpander<I2C, Ex, Em>`
[INFO] [stdout]     = note: required for `IoExpander<I2cProxy<'_, Mutex<I2c>>, Pca9535Cached<I2cProxy<'_, Mutex<I2c>>, &InputPin>, Mutex<...>>` to implement `SyncExpander<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>`
[INFO] [stdout]     = note: the full type name has been written to '/opt/rustwide/target/debug/deps/cached-53d65e70595a73f3.long-type-14387509760171450197.txt'
[INFO] [stdout] note: required by a bound in `Pca9535GPIO`
[INFO] [stdout]    --> tests/common/mod.rs:59:8
[INFO] [stdout]     |
[INFO] [stdout] 57  | pub struct Pca9535GPIO<'a, T, I2C>
[INFO] [stdout]     |            ----------- required by a bound in this struct
[INFO] [stdout] 58  | where
[INFO] [stdout] 59  |     T: SyncExpander<I2C>,
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^ required by this bound in `Pca9535GPIO`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>: ExpanderMutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>` is not satisfied
[INFO] [stdout]    --> tests/immediate.rs:225:49
[INFO] [stdout]     |
[INFO] [stdout] 225 |                 _out0_7: ExpanderOutputPin::new(&*IO_EXPANDER, GPIOBank::Bank0, 7, PinState::High)
[INFO] [stdout]     |                          ---------------------- ^^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>` is not implemented for `Mutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>`, which is required by `IoExpander<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>, Mutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>>: SyncExpander<_>`
[INFO] [stdout]     |                          |
[INFO] [stdout]     |                          required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `SyncExpander<I2C>` is implemented for `IoExpander<I2C, Ex, Em>`
[INFO] [stdout]     = note: required for `IoExpander<I2cProxy<'_, Mutex<I2c>>, Pca9535Immediate<I2cProxy<'_, Mutex<I2c>>>, Mutex<Pca9535Immediate<...>>>` to implement `SyncExpander<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>`
[INFO] [stdout]     = note: the full type name has been written to '/opt/rustwide/target/debug/deps/immediate-90cea765d48ea960.long-type-8850606078877126142.txt'
[INFO] [stdout] note: required by a bound in `ExpanderOutputPin::<'a, I2C, Io>::new`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/pin.rs:106:9
[INFO] [stdout]     |
[INFO] [stdout] 106 |     Io: SyncExpander<I2C>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `ExpanderOutputPin::<'a, I2C, Io>::new`
[INFO] [stdout] ...
[INFO] [stdout] 114 |     pub fn new(
[INFO] [stdout]     |            --- required by a bound in this associated function
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>: ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not satisfied
[INFO] [stdout]    --> tests/cached.rs:243:47
[INFO] [stdout]     |
[INFO] [stdout] 243 |                 in0_4: ExpanderInputPin::new(&*IO_EXPANDER, GPIOBank::Bank0, 4).unwrap(),
[INFO] [stdout]     |                                               ^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not implemented for `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>: ExpanderMutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>` is not satisfied
[INFO] [stdout]    --> tests/immediate.rs:225:26
[INFO] [stdout]     |
[INFO] [stdout] 225 |                 _out0_7: ExpanderOutputPin::new(&*IO_EXPANDER, GPIOBank::Bank0, 7, PinState::High)
[INFO] [stdout]     |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>` is not implemented for `Mutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>: ExpanderMutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>` is not satisfied
[INFO] [stdout]    --> tests/cached.rs:243:46
[INFO] [stdout]     |
[INFO] [stdout] 243 |                 in0_4: ExpanderInputPin::new(&*IO_EXPANDER, GPIOBank::Bank0, 4).unwrap(),
[INFO] [stdout]     |                        --------------------- ^^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>` is not implemented for `Mutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>`, which is required by `IoExpander<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>, Mutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>>: SyncExpander<_>`
[INFO] [stdout]     |                        |
[INFO] [stdout]     |                        required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `SyncExpander<I2C>` is implemented for `IoExpander<I2C, Ex, Em>`
[INFO] [stdout]     = note: required for `IoExpander<I2cProxy<'_, Mutex<I2c>>, Pca9535Cached<I2cProxy<'_, Mutex<I2c>>, &InputPin>, Mutex<...>>` to implement `SyncExpander<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>`
[INFO] [stdout]     = note: the full type name has been written to '/opt/rustwide/target/debug/deps/cached-53d65e70595a73f3.long-type-10037417883413855095.txt'
[INFO] [stdout] note: required by a bound in `ExpanderInputPin::<'a, I2C, Io>::new`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/pin.rs:48:9
[INFO] [stdout]     |
[INFO] [stdout] 48  |     Io: SyncExpander<I2C>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `ExpanderInputPin::<'a, I2C, Io>::new`
[INFO] [stdout] ...
[INFO] [stdout] 56  |     pub fn new(expander: &'a Io, bank: GPIOBank, pin: u8) -> Result<Self, ExpanderError<E>> {
[INFO] [stdout]     |            --- required by a bound in this associated function
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>: ExpanderMutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>` is not satisfied
[INFO] [stdout]    --> tests/immediate.rs:225:26
[INFO] [stdout]     |
[INFO] [stdout] 225 |                   _out0_7: ExpanderOutputPin::new(&*IO_EXPANDER, GPIOBank::Bank0, 7, PinState::High)
[INFO] [stdout]     |  __________________________^
[INFO] [stdout] 226 | |                     .unwrap(),
[INFO] [stdout]     | |_____________________________^ the trait `ExpanderMutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>` is not implemented for `Mutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>: ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not satisfied
[INFO] [stdout]    --> tests/immediate.rs:227:49
[INFO] [stdout]     |
[INFO] [stdout] 227 |                 out1_5: ExpanderOutputPin::new(&*IO_EXPANDER, GPIOBank::Bank1, 5, PinState::Low)
[INFO] [stdout]     |                                                 ^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not implemented for `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>: ExpanderMutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>` is not satisfied
[INFO] [stdout]    --> tests/cached.rs:243:24
[INFO] [stdout]     |
[INFO] [stdout] 243 |                 in0_4: ExpanderInputPin::new(&*IO_EXPANDER, GPIOBank::Bank0, 4).unwrap(),
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>` is not implemented for `Mutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>: ExpanderMutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>` is not satisfied
[INFO] [stdout]    --> tests/immediate.rs:227:48
[INFO] [stdout]     |
[INFO] [stdout] 227 |                 out1_5: ExpanderOutputPin::new(&*IO_EXPANDER, GPIOBank::Bank1, 5, PinState::Low)
[INFO] [stdout]     |                         ---------------------- ^^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>` is not implemented for `Mutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>`, which is required by `IoExpander<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>, Mutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>>: SyncExpander<_>`
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `SyncExpander<I2C>` is implemented for `IoExpander<I2C, Ex, Em>`
[INFO] [stdout]     = note: required for `IoExpander<I2cProxy<'_, Mutex<I2c>>, Pca9535Immediate<I2cProxy<'_, Mutex<I2c>>>, Mutex<Pca9535Immediate<...>>>` to implement `SyncExpander<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>`
[INFO] [stdout]     = note: the full type name has been written to '/opt/rustwide/target/debug/deps/immediate-90cea765d48ea960.long-type-3335423093180536143.txt'
[INFO] [stdout] note: required by a bound in `ExpanderOutputPin::<'a, I2C, Io>::new`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/pin.rs:106:9
[INFO] [stdout]     |
[INFO] [stdout] 106 |     Io: SyncExpander<I2C>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `ExpanderOutputPin::<'a, I2C, Io>::new`
[INFO] [stdout] ...
[INFO] [stdout] 114 |     pub fn new(
[INFO] [stdout]     |            --- required by a bound in this associated function
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>: ExpanderMutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>` is not satisfied
[INFO] [stdout]    --> tests/cached.rs:243:24
[INFO] [stdout]     |
[INFO] [stdout] 243 |                 in0_4: ExpanderInputPin::new(&*IO_EXPANDER, GPIOBank::Bank0, 4).unwrap(),
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>` is not implemented for `Mutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>: ExpanderMutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>` is not satisfied
[INFO] [stdout]    --> tests/immediate.rs:227:25
[INFO] [stdout]     |
[INFO] [stdout] 227 |                 out1_5: ExpanderOutputPin::new(&*IO_EXPANDER, GPIOBank::Bank1, 5, PinState::Low)
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>` is not implemented for `Mutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>: ExpanderMutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>` is not satisfied
[INFO] [stdout]    --> tests/immediate.rs:227:25
[INFO] [stdout]     |
[INFO] [stdout] 227 |                   out1_5: ExpanderOutputPin::new(&*IO_EXPANDER, GPIOBank::Bank1, 5, PinState::Low)
[INFO] [stdout]     |  _________________________^
[INFO] [stdout] 228 | |                     .unwrap(),
[INFO] [stdout]     | |_____________________________^ the trait `ExpanderMutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>` is not implemented for `Mutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>: ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not satisfied
[INFO] [stdout]    --> tests/cached.rs:244:50
[INFO] [stdout]     |
[INFO] [stdout] 244 |                 _out0_7: ExpanderOutputPin::new(&*IO_EXPANDER, GPIOBank::Bank0, 7, PinState::High)
[INFO] [stdout]     |                                                  ^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not implemented for `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>: ExpanderMutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>` is not satisfied
[INFO] [stdout]    --> tests/immediate.rs:231:13
[INFO] [stdout]     |
[INFO] [stdout] 231 |             Mutex::new(pca9535_gpio)
[INFO] [stdout]     |             ^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>` is not implemented for `Mutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>: ExpanderMutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>` is not satisfied
[INFO] [stdout]    --> tests/immediate.rs:231:13
[INFO] [stdout]     |
[INFO] [stdout] 231 |             Mutex::new(pca9535_gpio)
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>` is not implemented for `Mutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>: ExpanderMutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>` is not satisfied
[INFO] [stdout]    --> tests/cached.rs:244:49
[INFO] [stdout]     |
[INFO] [stdout] 244 |                 _out0_7: ExpanderOutputPin::new(&*IO_EXPANDER, GPIOBank::Bank0, 7, PinState::High)
[INFO] [stdout]     |                          ---------------------- ^^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>` is not implemented for `Mutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>`, which is required by `IoExpander<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>, Mutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>>: SyncExpander<_>`
[INFO] [stdout]     |                          |
[INFO] [stdout]     |                          required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `SyncExpander<I2C>` is implemented for `IoExpander<I2C, Ex, Em>`
[INFO] [stdout]     = note: required for `IoExpander<I2cProxy<'_, Mutex<I2c>>, Pca9535Cached<I2cProxy<'_, Mutex<I2c>>, &InputPin>, Mutex<...>>` to implement `SyncExpander<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>`
[INFO] [stdout]     = note: the full type name has been written to '/opt/rustwide/target/debug/deps/cached-53d65e70595a73f3.long-type-4760471613276758483.txt'
[INFO] [stdout] note: required by a bound in `ExpanderOutputPin::<'a, I2C, Io>::new`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/pin.rs:106:9
[INFO] [stdout]     |
[INFO] [stdout] 106 |     Io: SyncExpander<I2C>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `ExpanderOutputPin::<'a, I2C, Io>::new`
[INFO] [stdout] ...
[INFO] [stdout] 114 |     pub fn new(
[INFO] [stdout]     |            --- required by a bound in this associated function
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>: ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not satisfied
[INFO] [stdout]    --> tests/immediate.rs:214:5
[INFO] [stdout]     |
[INFO] [stdout] 214 | /     lazy_static! {
[INFO] [stdout] 215 | |         static ref IO_EXPANDER: IoExpander<ShareableI2c, ImmediateExpander, Mutex<ImmediateExpander>> = {
[INFO] [stdout] 216 | |             let i2c_bus = *I2C_BUS.lock().unwrap();
[INFO] [stdout] 217 | |             let expander = Pca9535Immediate::new(i2c_bus.acquire_i2c(), ADDR);
[INFO] [stdout] ...   |
[INFO] [stdout] 232 | |         };
[INFO] [stdout] 233 | |     }
[INFO] [stdout]     | |_____^ the trait `ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not implemented for `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout]     = note: this error originates in the macro `__lazy_static_internal` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>: ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not satisfied
[INFO] [stdout]    --> tests/immediate.rs:214:5
[INFO] [stdout]     |
[INFO] [stdout] 214 | /     lazy_static! {
[INFO] [stdout] 215 | |         static ref IO_EXPANDER: IoExpander<ShareableI2c, ImmediateExpander, Mutex<ImmediateExpander>> = {
[INFO] [stdout] 216 | |             let i2c_bus = *I2C_BUS.lock().unwrap();
[INFO] [stdout] 217 | |             let expander = Pca9535Immediate::new(i2c_bus.acquire_i2c(), ADDR);
[INFO] [stdout] ...   |
[INFO] [stdout] 232 | |         };
[INFO] [stdout] 233 | |     }
[INFO] [stdout]     | |_____^ the trait `ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not implemented for `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout]     = note: this error originates in the macro `__lazy_static_internal` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>: ExpanderMutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>` is not satisfied
[INFO] [stdout]    --> tests/cached.rs:244:26
[INFO] [stdout]     |
[INFO] [stdout] 244 |                 _out0_7: ExpanderOutputPin::new(&*IO_EXPANDER, GPIOBank::Bank0, 7, PinState::High)
[INFO] [stdout]     |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>` is not implemented for `Mutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>: ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not satisfied
[INFO] [stdout]    --> tests/immediate.rs:239:28
[INFO] [stdout]     |
[INFO] [stdout] 239 |         let pca9535_gpio = PCA9535_GPIO.lock().unwrap();
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not implemented for `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>: ExpanderMutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>` is not satisfied
[INFO] [stdout]    --> tests/cached.rs:244:26
[INFO] [stdout]     |
[INFO] [stdout] 244 |                   _out0_7: ExpanderOutputPin::new(&*IO_EXPANDER, GPIOBank::Bank0, 7, PinState::High)
[INFO] [stdout]     |  __________________________^
[INFO] [stdout] 245 | |                     .unwrap(),
[INFO] [stdout]     | |_____________________________^ the trait `ExpanderMutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>` is not implemented for `Mutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>: ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not satisfied
[INFO] [stdout]    --> tests/immediate.rs:239:28
[INFO] [stdout]     |
[INFO] [stdout] 239 |         let pca9535_gpio = PCA9535_GPIO.lock().unwrap();
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not implemented for `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>: ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not satisfied
[INFO] [stdout]    --> tests/cached.rs:246:49
[INFO] [stdout]     |
[INFO] [stdout] 246 |                 out1_5: ExpanderOutputPin::new(&*IO_EXPANDER, GPIOBank::Bank1, 5, PinState::Low)
[INFO] [stdout]     |                                                 ^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not implemented for `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>: ExpanderMutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>` is not satisfied
[INFO] [stdout]    --> tests/cached.rs:246:48
[INFO] [stdout]     |
[INFO] [stdout] 246 |                 out1_5: ExpanderOutputPin::new(&*IO_EXPANDER, GPIOBank::Bank1, 5, PinState::Low)
[INFO] [stdout]     |                         ---------------------- ^^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>` is not implemented for `Mutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>`, which is required by `IoExpander<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>, Mutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>>: SyncExpander<_>`
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `SyncExpander<I2C>` is implemented for `IoExpander<I2C, Ex, Em>`
[INFO] [stdout]     = note: required for `IoExpander<I2cProxy<'_, Mutex<I2c>>, Pca9535Cached<I2cProxy<'_, Mutex<I2c>>, &InputPin>, Mutex<...>>` to implement `SyncExpander<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>`
[INFO] [stdout]     = note: the full type name has been written to '/opt/rustwide/target/debug/deps/cached-53d65e70595a73f3.long-type-1894337690496625540.txt'
[INFO] [stdout] note: required by a bound in `ExpanderOutputPin::<'a, I2C, Io>::new`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/pin.rs:106:9
[INFO] [stdout]     |
[INFO] [stdout] 106 |     Io: SyncExpander<I2C>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `ExpanderOutputPin::<'a, I2C, Io>::new`
[INFO] [stdout] ...
[INFO] [stdout] 114 |     pub fn new(
[INFO] [stdout]     |            --- required by a bound in this associated function
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>: ExpanderMutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>` is not satisfied
[INFO] [stdout]    --> tests/cached.rs:246:25
[INFO] [stdout]     |
[INFO] [stdout] 246 |                 out1_5: ExpanderOutputPin::new(&*IO_EXPANDER, GPIOBank::Bank1, 5, PinState::Low)
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>` is not implemented for `Mutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>: ExpanderMutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>` is not satisfied
[INFO] [stdout]    --> tests/cached.rs:246:25
[INFO] [stdout]     |
[INFO] [stdout] 246 |                   out1_5: ExpanderOutputPin::new(&*IO_EXPANDER, GPIOBank::Bank1, 5, PinState::Low)
[INFO] [stdout]     |  _________________________^
[INFO] [stdout] 247 | |                     .unwrap(),
[INFO] [stdout]     | |_____________________________^ the trait `ExpanderMutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>` is not implemented for `Mutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>: ExpanderMutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>` is not satisfied
[INFO] [stdout]    --> tests/cached.rs:250:13
[INFO] [stdout]     |
[INFO] [stdout] 250 |             Mutex::new(pca9535_gpio)
[INFO] [stdout]     |             ^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>` is not implemented for `Mutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>: ExpanderMutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>` is not satisfied
[INFO] [stdout]    --> tests/cached.rs:250:13
[INFO] [stdout]     |
[INFO] [stdout] 250 |             Mutex::new(pca9535_gpio)
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>` is not implemented for `Mutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>: ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not satisfied
[INFO] [stdout]    --> tests/cached.rs:232:5
[INFO] [stdout]     |
[INFO] [stdout] 232 | /     lazy_static! {
[INFO] [stdout] 233 | |         static ref IO_EXPANDER: IoExpander<ShareableI2c, CachedExpander, Mutex<CachedExpander>> = {
[INFO] [stdout] 234 | |             let i2c_bus = *I2C_BUS.lock().unwrap();
[INFO] [stdout] 235 | |             let expander =
[INFO] [stdout] ...   |
[INFO] [stdout] 251 | |         };
[INFO] [stdout] 252 | |     }
[INFO] [stdout]     | |_____^ the trait `ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not implemented for `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout]     = note: this error originates in the macro `__lazy_static_internal` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: the method `is_high` exists for struct `ExpanderInputPin<'static, I2cProxy<'static, Mutex<I2c>>, IoExpander<I2cProxy<'static, Mutex<I2c>>, ..., ...>>`, but its trait bounds were not satisfied
[INFO] [stdout]    --> tests/immediate.rs:243:36
[INFO] [stdout]     |
[INFO] [stdout] 243 |         assert!(pca9535_gpio.in0_4.is_high().unwrap());
[INFO] [stdout]     |                                    ^^^^^^^ method cannot be called due to unsatisfied trait bounds
[INFO] [stdout]     |
[INFO] [stdout]    ::: /opt/rustwide/workdir/src/pin.rs:20:1
[INFO] [stdout]     |
[INFO] [stdout] 20  | pub struct ExpanderInputPin<'a, I2C, Io>
[INFO] [stdout]     | ---------------------------------------- doesn't satisfy `_: InputPin`
[INFO] [stdout]     |
[INFO] [stdout]    ::: /opt/rustwide/workdir/src/expander/io.rs:12:1
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     | ---------------------------------- doesn't satisfy `_: SyncExpander<I2cProxy<'_, Mutex<I2c>>>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: the full type name has been written to '/opt/rustwide/target/debug/deps/immediate-90cea765d48ea960.long-type-13015446903731465756.txt'
[INFO] [stdout]     = note: the following trait bounds were not satisfied:
[INFO] [stdout]             `IoExpander<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>, Mutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>>: SyncExpander<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>`
[INFO] [stdout]             which is required by `ExpanderInputPin<'_, I2cProxy<'_, Mutex<rppal::i2c::I2c>>, IoExpander<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>, Mutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>>>: embedded_hal::digital::InputPin`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>: ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not satisfied
[INFO] [stdout]    --> tests/cached.rs:232:5
[INFO] [stdout]     |
[INFO] [stdout] 232 | /     lazy_static! {
[INFO] [stdout] 233 | |         static ref IO_EXPANDER: IoExpander<ShareableI2c, CachedExpander, Mutex<CachedExpander>> = {
[INFO] [stdout] 234 | |             let i2c_bus = *I2C_BUS.lock().unwrap();
[INFO] [stdout] 235 | |             let expander =
[INFO] [stdout] ...   |
[INFO] [stdout] 251 | |         };
[INFO] [stdout] 252 | |     }
[INFO] [stdout]     | |_____^ the trait `ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not implemented for `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout]     = note: this error originates in the macro `__lazy_static_internal` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>: ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not satisfied
[INFO] [stdout]    --> tests/immediate.rs:243:17
[INFO] [stdout]     |
[INFO] [stdout] 243 |         assert!(pca9535_gpio.in0_4.is_high().unwrap());
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not implemented for `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>: ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not satisfied
[INFO] [stdout]    --> tests/cached.rs:258:28
[INFO] [stdout]     |
[INFO] [stdout] 258 |         let pca9535_gpio = PCA9535_GPIO.lock().unwrap();
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not implemented for `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>: ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not satisfied
[INFO] [stdout]    --> tests/cached.rs:258:28
[INFO] [stdout]     |
[INFO] [stdout] 258 |         let pca9535_gpio = PCA9535_GPIO.lock().unwrap();
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not implemented for `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>: ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not satisfied
[INFO] [stdout]    --> tests/immediate.rs:250:28
[INFO] [stdout]     |
[INFO] [stdout] 250 |         let pca9535_gpio = PCA9535_GPIO.lock().unwrap();
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not implemented for `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>: ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not satisfied
[INFO] [stdout]    --> tests/immediate.rs:250:28
[INFO] [stdout]     |
[INFO] [stdout] 250 |         let pca9535_gpio = PCA9535_GPIO.lock().unwrap();
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not implemented for `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: the method `is_low` exists for struct `ExpanderInputPin<'static, I2cProxy<'static, Mutex<I2c>>, IoExpander<I2cProxy<'static, Mutex<I2c>>, ..., ...>>`, but its trait bounds were not satisfied
[INFO] [stdout]    --> tests/immediate.rs:254:36
[INFO] [stdout]     |
[INFO] [stdout] 254 |         assert!(pca9535_gpio.in0_4.is_low().unwrap());
[INFO] [stdout]     |                                    ^^^^^^ method cannot be called due to unsatisfied trait bounds
[INFO] [stdout]     |
[INFO] [stdout]    ::: /opt/rustwide/workdir/src/pin.rs:20:1
[INFO] [stdout]     |
[INFO] [stdout] 20  | pub struct ExpanderInputPin<'a, I2C, Io>
[INFO] [stdout]     | ---------------------------------------- doesn't satisfy `_: InputPin`
[INFO] [stdout]     |
[INFO] [stdout]    ::: /opt/rustwide/workdir/src/expander/io.rs:12:1
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     | ---------------------------------- doesn't satisfy `_: SyncExpander<I2cProxy<'_, Mutex<I2c>>>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: the full type name has been written to '/opt/rustwide/target/debug/deps/immediate-90cea765d48ea960.long-type-13015446903731465756.txt'
[INFO] [stdout]     = note: the following trait bounds were not satisfied:
[INFO] [stdout]             `IoExpander<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>, Mutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>>: SyncExpander<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>`
[INFO] [stdout]             which is required by `ExpanderInputPin<'_, I2cProxy<'_, Mutex<rppal::i2c::I2c>>, IoExpander<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>, Mutex<Pca9535Immediate<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>>>>: embedded_hal::digital::InputPin`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>: ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not satisfied
[INFO] [stdout]    --> tests/immediate.rs:254:17
[INFO] [stdout]     |
[INFO] [stdout] 254 |         assert!(pca9535_gpio.in0_4.is_low().unwrap());
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not implemented for `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>: ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not satisfied
[INFO] [stdout]    --> tests/immediate.rs:261:32
[INFO] [stdout]     |
[INFO] [stdout] 261 |         let mut pca9535_gpio = PCA9535_GPIO.lock().unwrap();
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not implemented for `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>: ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not satisfied
[INFO] [stdout]    --> tests/immediate.rs:261:32
[INFO] [stdout]     |
[INFO] [stdout] 261 |         let mut pca9535_gpio = PCA9535_GPIO.lock().unwrap();
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not implemented for `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: the method `set_low` exists for struct `ExpanderOutputPin<'static, I2cProxy<'static, Mutex<I2c>>, IoExpander<I2cProxy<'static, Mutex<I2c>>, ..., ...>>`, but its trait bounds were not satisfied
[INFO] [stdout]    --> tests/immediate.rs:263:29
[INFO] [stdout]     |
[INFO] [stdout] 263 |         pca9535_gpio.out1_5.set_low().unwrap();
[INFO] [stdout]     |                             ^^^^^^^ method cannot be called due to unsatisfied trait bounds
[INFO] [stdout]     |
[INFO] [stdout]    ::: /opt/rustwide/workdir/src/pin.rs:35:1
[INFO] [stdout]     |
[INFO] [stdout] 35  | pub struct ExpanderOutputPin<'a, I2C, Io>
[INFO] [stdout]     | ----------------------------------------- doesn't satisfy `_: OutputPin`
[INFO] [stdout]     |
[INFO] [stdout]    ::: /opt/rustwide/workdir/src/expander/io.rs:12:1
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     | ---------------------------------- doesn't satisfy `_: SyncExpander<I2cProxy<'static, Mutex<I2c>>>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: the full type name has been written to '/opt/rustwide/target/debug/deps/immediate-90cea765d48ea960.long-type-8069204256536614035.txt'
[INFO] [stdout]     = note: the following trait bounds were not satisfied:
[INFO] [stdout]             `IoExpander<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>, Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>>: SyncExpander<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>`
[INFO] [stdout]             which is required by `ExpanderOutputPin<'static, I2cProxy<'static, Mutex<rppal::i2c::I2c>>, IoExpander<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>, Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>>>: embedded_hal::digital::OutputPin`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: the method `is_high` exists for struct `ExpanderInputPin<'static, I2cProxy<'static, Mutex<I2c>>, IoExpander<I2cProxy<'static, Mutex<I2c>>, ..., ...>>`, but its trait bounds were not satisfied
[INFO] [stdout]    --> tests/cached.rs:262:36
[INFO] [stdout]     |
[INFO] [stdout] 262 |         assert!(pca9535_gpio.in0_4.is_high().unwrap());
[INFO] [stdout]     |                                    ^^^^^^^ method cannot be called due to unsatisfied trait bounds
[INFO] [stdout]     |
[INFO] [stdout]    ::: /opt/rustwide/workdir/src/pin.rs:20:1
[INFO] [stdout]     |
[INFO] [stdout] 20  | pub struct ExpanderInputPin<'a, I2C, Io>
[INFO] [stdout]     | ---------------------------------------- doesn't satisfy `_: InputPin`
[INFO] [stdout]     |
[INFO] [stdout]    ::: /opt/rustwide/workdir/src/expander/io.rs:12:1
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     | ---------------------------------- doesn't satisfy `_: SyncExpander<I2cProxy<'_, Mutex<I2c>>>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: the full type name has been written to '/opt/rustwide/target/debug/deps/cached-53d65e70595a73f3.long-type-8423242703157974346.txt'
[INFO] [stdout]     = note: the following trait bounds were not satisfied:
[INFO] [stdout]             `IoExpander<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>, Mutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>>: SyncExpander<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>`
[INFO] [stdout]             which is required by `ExpanderInputPin<'_, I2cProxy<'_, Mutex<rppal::i2c::I2c>>, IoExpander<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>, Mutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>>>: embedded_hal::digital::InputPin`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>: ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not satisfied
[INFO] [stdout]    --> tests/immediate.rs:263:9
[INFO] [stdout]     |
[INFO] [stdout] 263 |         pca9535_gpio.out1_5.set_low().unwrap();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not implemented for `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>: ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not satisfied
[INFO] [stdout]    --> tests/cached.rs:262:17
[INFO] [stdout]     |
[INFO] [stdout] 262 |         assert!(pca9535_gpio.in0_4.is_high().unwrap());
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not implemented for `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>: ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not satisfied
[INFO] [stdout]    --> tests/immediate.rs:272:32
[INFO] [stdout]     |
[INFO] [stdout] 272 |         let mut pca9535_gpio = PCA9535_GPIO.lock().unwrap();
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not implemented for `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>: ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not satisfied
[INFO] [stdout]    --> tests/immediate.rs:272:32
[INFO] [stdout]     |
[INFO] [stdout] 272 |         let mut pca9535_gpio = PCA9535_GPIO.lock().unwrap();
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not implemented for `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>: ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not satisfied
[INFO] [stdout]    --> tests/cached.rs:269:28
[INFO] [stdout]     |
[INFO] [stdout] 269 |         let pca9535_gpio = PCA9535_GPIO.lock().unwrap();
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not implemented for `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>: ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not satisfied
[INFO] [stdout]    --> tests/cached.rs:269:28
[INFO] [stdout]     |
[INFO] [stdout] 269 |         let pca9535_gpio = PCA9535_GPIO.lock().unwrap();
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not implemented for `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: the method `is_low` exists for struct `ExpanderInputPin<'static, I2cProxy<'static, Mutex<I2c>>, IoExpander<I2cProxy<'static, Mutex<I2c>>, ..., ...>>`, but its trait bounds were not satisfied
[INFO] [stdout]    --> tests/cached.rs:273:36
[INFO] [stdout]     |
[INFO] [stdout] 273 |         assert!(pca9535_gpio.in0_4.is_low().unwrap());
[INFO] [stdout]     |                                    ^^^^^^ method cannot be called due to unsatisfied trait bounds
[INFO] [stdout]     |
[INFO] [stdout]    ::: /opt/rustwide/workdir/src/pin.rs:20:1
[INFO] [stdout]     |
[INFO] [stdout] 20  | pub struct ExpanderInputPin<'a, I2C, Io>
[INFO] [stdout]     | ---------------------------------------- doesn't satisfy `_: InputPin`
[INFO] [stdout]     |
[INFO] [stdout]    ::: /opt/rustwide/workdir/src/expander/io.rs:12:1
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     | ---------------------------------- doesn't satisfy `_: SyncExpander<I2cProxy<'_, Mutex<I2c>>>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: the full type name has been written to '/opt/rustwide/target/debug/deps/cached-53d65e70595a73f3.long-type-8423242703157974346.txt'
[INFO] [stdout]     = note: the following trait bounds were not satisfied:
[INFO] [stdout]             `IoExpander<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>, Mutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>>: SyncExpander<I2cProxy<'_, Mutex<rppal::i2c::I2c>>>`
[INFO] [stdout]             which is required by `ExpanderInputPin<'_, I2cProxy<'_, Mutex<rppal::i2c::I2c>>, IoExpander<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>, Mutex<Pca9535Cached<I2cProxy<'_, Mutex<rppal::i2c::I2c>>, &rppal::gpio::InputPin>>>>: embedded_hal::digital::InputPin`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: the method `set_high` exists for struct `ExpanderOutputPin<'static, I2cProxy<'static, Mutex<I2c>>, IoExpander<I2cProxy<'static, Mutex<I2c>>, ..., ...>>`, but its trait bounds were not satisfied
[INFO] [stdout]    --> tests/immediate.rs:274:29
[INFO] [stdout]     |
[INFO] [stdout] 274 |         pca9535_gpio.out1_5.set_high().unwrap();
[INFO] [stdout]     |                             ^^^^^^^^ method cannot be called due to unsatisfied trait bounds
[INFO] [stdout]     |
[INFO] [stdout]    ::: /opt/rustwide/workdir/src/pin.rs:35:1
[INFO] [stdout]     |
[INFO] [stdout] 35  | pub struct ExpanderOutputPin<'a, I2C, Io>
[INFO] [stdout]     | ----------------------------------------- doesn't satisfy `_: OutputPin`
[INFO] [stdout]     |
[INFO] [stdout]    ::: /opt/rustwide/workdir/src/expander/io.rs:12:1
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     | ---------------------------------- doesn't satisfy `_: SyncExpander<I2cProxy<'static, Mutex<I2c>>>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: the full type name has been written to '/opt/rustwide/target/debug/deps/immediate-90cea765d48ea960.long-type-8069204256536614035.txt'
[INFO] [stdout]     = note: the following trait bounds were not satisfied:
[INFO] [stdout]             `IoExpander<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>, Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>>: SyncExpander<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>`
[INFO] [stdout]             which is required by `ExpanderOutputPin<'static, I2cProxy<'static, Mutex<rppal::i2c::I2c>>, IoExpander<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>, Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>>>: embedded_hal::digital::OutputPin`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>: ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not satisfied
[INFO] [stdout]    --> tests/cached.rs:273:17
[INFO] [stdout]     |
[INFO] [stdout] 273 |         assert!(pca9535_gpio.in0_4.is_low().unwrap());
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not implemented for `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>: ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not satisfied
[INFO] [stdout]    --> tests/immediate.rs:274:9
[INFO] [stdout]     |
[INFO] [stdout] 274 |         pca9535_gpio.out1_5.set_high().unwrap();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>` is not implemented for `Mutex<Pca9535Immediate<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `OutputPin`
[INFO] [stdout]    --> tests/immediate.rs:201:49
[INFO] [stdout]     |
[INFO] [stdout] 201 |     use hal::digital::{InputPin as HalInputPin, OutputPin as HalOutputPin};
[INFO] [stdout]     |                                                 ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `InputPin`
[INFO] [stdout]    --> tests/immediate.rs:201:24
[INFO] [stdout]     |
[INFO] [stdout] 201 |     use hal::digital::{InputPin as HalInputPin, OutputPin as HalOutputPin};
[INFO] [stdout]     |                        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>: ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not satisfied
[INFO] [stdout]    --> tests/cached.rs:280:32
[INFO] [stdout]     |
[INFO] [stdout] 280 |         let mut pca9535_gpio = PCA9535_GPIO.lock().unwrap();
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not implemented for `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>: ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not satisfied
[INFO] [stdout]    --> tests/cached.rs:280:32
[INFO] [stdout]     |
[INFO] [stdout] 280 |         let mut pca9535_gpio = PCA9535_GPIO.lock().unwrap();
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not implemented for `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: the method `set_low` exists for struct `ExpanderOutputPin<'static, I2cProxy<'static, Mutex<I2c>>, IoExpander<I2cProxy<'static, Mutex<I2c>>, ..., ...>>`, but its trait bounds were not satisfied
[INFO] [stdout]    --> tests/cached.rs:282:29
[INFO] [stdout]     |
[INFO] [stdout] 282 |         pca9535_gpio.out1_5.set_low().unwrap();
[INFO] [stdout]     |                             ^^^^^^^ method cannot be called due to unsatisfied trait bounds
[INFO] [stdout]     |
[INFO] [stdout]    ::: /opt/rustwide/workdir/src/pin.rs:35:1
[INFO] [stdout]     |
[INFO] [stdout] 35  | pub struct ExpanderOutputPin<'a, I2C, Io>
[INFO] [stdout]     | ----------------------------------------- doesn't satisfy `_: OutputPin`
[INFO] [stdout]     |
[INFO] [stdout]    ::: /opt/rustwide/workdir/src/expander/io.rs:12:1
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     | ---------------------------------- doesn't satisfy `_: SyncExpander<I2cProxy<'static, Mutex<I2c>>>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: the full type name has been written to '/opt/rustwide/target/debug/deps/cached-53d65e70595a73f3.long-type-7877305193709674388.txt'
[INFO] [stdout]     = note: the following trait bounds were not satisfied:
[INFO] [stdout]             `IoExpander<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>, Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>>: SyncExpander<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>`
[INFO] [stdout]             which is required by `ExpanderOutputPin<'static, I2cProxy<'static, Mutex<rppal::i2c::I2c>>, IoExpander<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>, Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>>>: embedded_hal::digital::OutputPin`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>: ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not satisfied
[INFO] [stdout]    --> tests/cached.rs:282:9
[INFO] [stdout]     |
[INFO] [stdout] 282 |         pca9535_gpio.out1_5.set_low().unwrap();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not implemented for `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>: ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not satisfied
[INFO] [stdout]    --> tests/cached.rs:291:32
[INFO] [stdout]     |
[INFO] [stdout] 291 |         let mut pca9535_gpio = PCA9535_GPIO.lock().unwrap();
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not implemented for `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>: ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not satisfied
[INFO] [stdout]    --> tests/cached.rs:291:32
[INFO] [stdout]     |
[INFO] [stdout] 291 |         let mut pca9535_gpio = PCA9535_GPIO.lock().unwrap();
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not implemented for `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: the method `set_high` exists for struct `ExpanderOutputPin<'static, I2cProxy<'static, Mutex<I2c>>, IoExpander<I2cProxy<'static, Mutex<I2c>>, ..., ...>>`, but its trait bounds were not satisfied
[INFO] [stdout]    --> tests/cached.rs:293:29
[INFO] [stdout]     |
[INFO] [stdout] 293 |         pca9535_gpio.out1_5.set_high().unwrap();
[INFO] [stdout]     |                             ^^^^^^^^ method cannot be called due to unsatisfied trait bounds
[INFO] [stdout]     |
[INFO] [stdout]    ::: /opt/rustwide/workdir/src/pin.rs:35:1
[INFO] [stdout]     |
[INFO] [stdout] 35  | pub struct ExpanderOutputPin<'a, I2C, Io>
[INFO] [stdout]     | ----------------------------------------- doesn't satisfy `_: OutputPin`
[INFO] [stdout]     |
[INFO] [stdout]    ::: /opt/rustwide/workdir/src/expander/io.rs:12:1
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     | ---------------------------------- doesn't satisfy `_: SyncExpander<I2cProxy<'static, Mutex<I2c>>>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: the full type name has been written to '/opt/rustwide/target/debug/deps/cached-53d65e70595a73f3.long-type-7877305193709674388.txt'
[INFO] [stdout]     = note: the following trait bounds were not satisfied:
[INFO] [stdout]             `IoExpander<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>, Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>>: SyncExpander<I2cProxy<'static, Mutex<rppal::i2c::I2c>>>`
[INFO] [stdout]             which is required by `ExpanderOutputPin<'static, I2cProxy<'static, Mutex<rppal::i2c::I2c>>, IoExpander<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>, Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>>>: embedded_hal::digital::OutputPin`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>: ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not satisfied
[INFO] [stdout]    --> tests/cached.rs:293:9
[INFO] [stdout]     |
[INFO] [stdout] 293 |         pca9535_gpio.out1_5.set_high().unwrap();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^ the trait `ExpanderMutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>` is not implemented for `Mutex<Pca9535Cached<I2cProxy<'static, Mutex<rppal::i2c::I2c>>, &'static rppal::gpio::InputPin>>`
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `IoExpander`
[INFO] [stdout]    --> /opt/rustwide/workdir/src/expander/io.rs:16:9
[INFO] [stdout]     |
[INFO] [stdout] 12  | pub struct IoExpander<I2C, Ex, Em>
[INFO] [stdout]     |            ---------- required by a bound in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16  |     Em: ExpanderMutex<Ex>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ required by this bound in `IoExpander`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `OutputPin`
[INFO] [stdout]    --> tests/cached.rs:219:49
[INFO] [stdout]     |
[INFO] [stdout] 219 |     use hal::digital::{InputPin as HalInputPin, OutputPin as HalOutputPin};
[INFO] [stdout]     |                                                 ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `InputPin`
[INFO] [stdout]    --> tests/cached.rs:219:24
[INFO] [stdout]     |
[INFO] [stdout] 219 |     use hal::digital::{InputPin as HalInputPin, OutputPin as HalOutputPin};
[INFO] [stdout]     |                        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 53 previous errors; 2 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0277, E0599.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0277`.
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 53 previous errors; 2 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0277, E0599.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0277`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `pca9535` (test "immediate") due to 54 previous errors; 2 warnings emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stderr] error: could not compile `pca9535` (test "cached") due to 54 previous errors; 2 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "cc910194b7f88348a1029e10dee936ddd69e0aef84c0dce3631d4cd4da31e84b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "cc910194b7f88348a1029e10dee936ddd69e0aef84c0dce3631d4cd4da31e84b", kill_on_drop: false }`
[INFO] [stdout] cc910194b7f88348a1029e10dee936ddd69e0aef84c0dce3631d4cd4da31e84b
